/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Familia
 */
import java.io.*;
import javax.microedition.io.*;
import org.json.me.*;

public class Comunicacion implements Runnable{
    private Thread t;
    private HttpConnection c;
    private LectMedicion midlet;
    private String url;
    private int opcion;
    
    public Comunicacion(LectMedicion m){
        midlet=m;
    }
    
    public void conectar(int op){
        opcion = op;
        t=new Thread(this);
        t.start();
        
    }

    public void loguear(){
        this.url = "http://localhost:8080/EPSMedicion/movil/login.htm?usuario="+midlet.getName()+"&clave="+midlet.getPass();
        //this.url getDatosCliente= "http://190.223.56.52:8080/EPSPedidos1/app/movil?codigo="+midlet.getName();
        conectar(1);
    }

    public void getDatosCliente(String num_inscrip){
        this.url = "http://localhost:8088/EPSMedicion/movil/cliente.htm?num_inscrip="+num_inscrip;
        //this.url = "http://190.223.56.52:8080/EPSPedidos1/app/movil?codigo="+midlet.getName();
        conectar(2);
    }

    public void run(){
        try{
            c = (HttpConnection)Connector.open(url);
            c.setRequestProperty("Content-Language","es-ES"); 
            c.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.1"); 
            c.setRequestProperty("Connection","close"); 
            c.setRequestMethod(HttpConnection.GET); 
            InputStream is = c.openInputStream(); 
            String respuesta = procesarRespuesta(c,is);
            switch(opcion){
                case 1:{
                    System.out.println("procesar respuesta y si es ok menu de opciones");
                    if(respuesta.equalsIgnoreCase(""))
                        midlet.reportaError("LOGIN INCRRECTO");
                    else{
                        //midlet.principal();
                         estableceUsuario(respuesta);
                         midlet.visualizaMenu();
                        //muestraMensaje(respuesta);
                    }
                    
                }

                case 2:{
                    System.out.println("procesar otrsa  respuesta");
                    if(respuesta.equalsIgnoreCase(""))
                        midlet.reportaError("CLIENTE NO ENCONTRADO!");
                    else{
                         estableceCliente(respuesta);
                    }

                }
            }
        }
        catch (IOException e){
            midlet.reportaError("Ocurrio un error de conexion");
        }
        catch(JSONException exe){
            exe.printStackTrace();
            midlet.reportaError("Error en lectura de formato de datos de respuesta");
        }
    }

    private void estableceUsuario(String respuesta)throws JSONException{
        JSONObject objSon = new JSONObject(respuesta);
        midlet.setUsuario(objSon.getString("dni"));
        midlet.setNombre_usuario(objSon.getString("nombre"));

    }

    private void estableceCliente(String respuesta)throws JSONException{
        JSONObject objSon = new JSONObject(respuesta);
        //midlet.setUsuario(objSon.getString("nombre"));
        //midlet.setNombre_usuario(objSon.getString("direccion"));
        midlet.verCliente(objSon.getString("nombre"));

    }

    public void muestraMensaje(String respuesta) throws JSONException{
        // midlet.setRespuesta(respuesta);
            /*JSONArray jsonArray=new JSONArray(respuesta);
            respuesta="Las Provincias obtenidas son:\n\t";
            for(int i=0;i<jsonArray.length();i++){
                respuesta+=jsonArray.getString(i);
                respuesta+="\n\t";
            }con array solamente*/

           /* JSONArray jsonArray=new JSONArray(respuesta);
            respuesta="Las Docentes son:\n\n\t";
           // midlet.setRespuesta(respuesta);
            for(int i=0;i<jsonArray.length();i++){
                JSONObject objSon=jsonArray.getJSONObject(i);
                respuesta+=objSon.getString("codigo")+"  ";
                respuesta+="\n\t";
            }*/
           
            JSONObject objSon = new JSONObject(respuesta);
            respuesta+=objSon.getString("dni")+"  ";
            respuesta+="\n\t";

             respuesta+=(objSon.opt("nombre")).toString();
              midlet.setRespuesta(respuesta);
           /* JSONArray jsonArray1=new JSONArray(respuesta);
            for(int i=0;i<jsonArray1.length();i++){
                Cliente cli = new Cliente();
                cli.fromJSON((jsonArray1.opt(i)).toString());

                respuesta+=cli.getCodigo()+"++"+cli.getNombre()+"\n\t";
            }

            midlet.setRespuesta(respuesta);*/
    }

    public String procesarRespuesta(HttpConnection http, InputStream inst)
    throws IOException,JSONException{
        String respuesta = "";
        if (http.getResponseCode() == HttpConnection.HTTP_OK){ 
            System.out.println("OK "+midlet.getName()+midlet.getPass()); 
            int lon = (int) http.getLength(); 
            if (lon != -1){ 
                byte datos[] = new byte[lon]; 
                inst.read(datos,0,datos.length); 
                respuesta = new String(datos); 
            } 
            else{ 
                ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
                int ch; 
                while ((ch = inst.read()) != -1) 
                    baos.write(ch); 
                respuesta = new String(baos.toByteArray()); 
                baos.close(); 
            }
            c.close(); 
        } 
        else{ 
           midlet.reportaError("El Servidor no responde");
        }
         return respuesta;
    } 
     
} 
   
